package com.project.sianet.entidades;

import java.util.Date;
import java.util.List;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;

import android.os.Parcel;
import android.os.Parcelable;

@JsonIgnoreProperties(ignoreUnknown=true)
public class Noticia implements Parcelable {

	public int notCodigo;
	public String notTitulo;
	public String notDetalle;
	public String notUsuIngreso;
	public String notNombreUsuIngreso;
	public int notPerfilUsuIngreso;
	public Date notFecha;
	public Boolean notNoLeida;
	public List<String> notArchivos;
	
	public Noticia() {}
	
	public Noticia(int notCodigo, String notTitulo, String notDetalle, String notUsuIngreso,
			String notNombreUsuIngreso, int notPerfilUsuIngreso, Date notFecha, Boolean notNoLeida, List<String> notArchivos) {
		this.notCodigo = notCodigo;
		this.notTitulo = notTitulo;
		this.notDetalle = notDetalle;
		this.notUsuIngreso = notUsuIngreso;
		this.notNombreUsuIngreso = notNombreUsuIngreso;
		this.notPerfilUsuIngreso = notPerfilUsuIngreso;
		this.notFecha = notFecha;
		this.notNoLeida = notNoLeida;
		this.notArchivos = notArchivos;
	}
	
	@JsonProperty("PerfilUsuario")
	public int getNotPerfilUsuIngreso() {
		return notPerfilUsuIngreso;
	}

	@JsonProperty("PerfilUsuario")
	public void setNotPerfilUsuIngreso(int notPerfilUsuIngreso) {
		this.notPerfilUsuIngreso = notPerfilUsuIngreso;
	}
	
	@JsonProperty("NombreUsuario")
	public String getNotNombreUsuIngreso() {
		return notNombreUsuIngreso;
	}

	@JsonProperty("NombreUsuario")
	public void setNotNombreUsuIngreso(String notNombreUsuIngreso) {
		this.notNombreUsuIngreso = notNombreUsuIngreso;
	}

	@JsonProperty("NoLeido")
	public Boolean getNotNoLeida() {
		return notNoLeida;
	}

	@JsonProperty("NoLeido")
	public void setNotNoLeida(Boolean notNoLeida) {
		this.notNoLeida = notNoLeida;
	}

	@JsonProperty("Archivos")
	public List<String> getNotArchivos() {
		return notArchivos;
	}

	@JsonProperty("Archivos")
	public void setNotArchivos(List<String> notArchivos) {
		this.notArchivos = notArchivos;
	}
	
	@JsonProperty("LoginUsuario")
	public String getNotUsuIngreso() {
		return notUsuIngreso;
	}

	@JsonProperty("LoginUsuario")
	public void setNotUsuIngreso(String notUsuIngreso) {
		this.notUsuIngreso = notUsuIngreso;
	}

	@JsonProperty("Codigo")
	public int getNotCodigo() {
		return notCodigo;
	}

	@JsonProperty("Codigo")
	public void setNotCodigo(int notCodigo) {
		this.notCodigo = notCodigo;
	}

	@JsonProperty("Titulo")
	public String getNotTitulo() {
		return notTitulo;
	}

	@JsonProperty("Titulo")
	public void setNotTitulo(String notTitulo) {
		this.notTitulo = notTitulo;
	}

	@JsonProperty("Detalle")
	public String getNotDetalle() {
		return notDetalle;
	}

	@JsonProperty("Detalle")
	public void setNotDetalle(String notDetalle) {
		this.notDetalle = notDetalle;
	}

	@JsonProperty("Fecha")
	public Date getNotFecha() {
		return notFecha;
	}

	@JsonProperty("Fecha")
	public void setNotFecha(Date notFecha) {
		this.notFecha = notFecha;
	}
	
	public String publicadoPor() {
		
		String usuario = "";
		
		switch (this.getNotPerfilUsuIngreso()) {
		
			case 8:
			case 16:
			case 2048:
			case 4096:
				break;
			default:
				usuario = this.getNotNombreUsuIngreso();
				break;
		
		}
		
		return usuario;
		
	}

	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel out, int flags) {
		out.writeInt(notCodigo);
		out.writeString(notTitulo);
		out.writeString(notDetalle);
		out.writeString(notUsuIngreso);
		out.writeString(notNombreUsuIngreso);
		out.writeInt(notPerfilUsuIngreso);
		out.writeLong(notFecha.getTime());
		out.writeByte((byte) (notNoLeida ? 0 : 1));
		out.writeArray(notArchivos.toArray());
	}
	
	public static final Parcelable.Creator<Noticia> CREATOR = new Parcelable.Creator<Noticia>() {
		public Noticia createFromParcel(Parcel in) {
		    return new Noticia(in);
		}
		
		public Noticia[] newArray(int size) {
		    return new Noticia[size];
		}
	};
	
	@SuppressWarnings("unchecked")
	public Noticia(Parcel in) {
		notCodigo = in.readInt();
		notTitulo = in.readString();
		notDetalle = in.readString();
		notUsuIngreso = in.readString();
		notNombreUsuIngreso = in.readString();
		notPerfilUsuIngreso = in.readInt();
		notFecha = new Date(in.readLong());
		notNoLeida = in.readByte() == 0;
		notArchivos = in.readArrayList(String.class.getClassLoader());
	}
	
}
